`:top
`!JavaBeans`! sind `F33f`_`[Software-Komponenten`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Komponente_(Software)]`_`f für die Programmiersprache `F33f`_`[Java`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Java_(Programmiersprache)]`_`f. JavaBeans entwickelten sich aus der Notwendigkeit heraus, `F33f`_`[GUI`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Graphical_User_Interface]`_`f-Klassen (`F33f`_`[AWT`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Abstract_Window_Toolkit]`_`f, `F33f`_`[Swing`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Swing_(Java)]`_`f) einfach zu `F33f`_`[instanziieren`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Objekt_(Programmierung)]`_`f und mittels `F33f`_`[RMI`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Remote_Method_Invocation]`_`f zu übertragen. JavaBeans werden auch als Container zur Datenübertragung verwendet. Daher zeichnen sich alle JavaBeans durch folgende Eigenschaften aus:
• Öffentlicher parameterloser `F33f`_`[Konstruktor`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Konstruktor]`_`f
• `F33f`_`[Serialisierbarkeit`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Serialisierung]`_`f (Serializable)
• Öffentliche `F33f`_`[Zugriffsmethoden`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zugriffsfunktion]`_`f (Public Getters/Setters)
Auf Grund dieser Eigenschaften eignen sich JavaBeans auch als Datenobjekte für `F33f`_`[Persistenzframeworks`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Persistenz_(Informatik)]`_`f `*(siehe `F33f`_`[Enterprise JavaBeans`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Enterprise_JavaBeans]`_`f)`*.
>>Contents
• `F0af`_`[Überblick`#berblick]`_`f
• `F0af`_`[Instanziierung`#instanziierung]`_`f
• `F0af`_`[Zugriffsoperationen`#zugriffsoperationen]`_`f
• `F0af`_`[Introspektion`#introspektion]`_`f
• `F0af`_`[Weiteres`#weiteres]`_`f
• `F0af`_`[Literatur`#literatur]`_`f
• `F0af`_`[Weblinks`#weblinks]`_`f
-─
>>Überblick
Eine JavaBean ist eine Java-`F33f`_`[Klasse`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Klasse_(Programmierung)]`_`f, die einem `F33f`_`[Komponentenmodell`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Komponentenmodell]`_`f entspricht, um automatisierten Zugriff auf ihre Eigenschaften (`F33f`_`[Membervariablen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Membervariable]`_`f) und Operationen (`F33f`_`[Methoden`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Methode_(Programmierung)]`_`f) zu erlauben. Das Java-`F33f`_`[SDK`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Software_Development_Kit]`_`f stellt Anwendungsentwicklern die Bean-`F33f`_`[API`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Application_Programming_Interface]`_`f (das Paket `B100`F9d9java.beans`f`b) zur Verfügung, um beispielsweise eine Kurzbeschreibung einer Bean anzuzeigen. Das JavaBean-Komponentenmodell wurde vor allem entwickelt, um eine einheitliche API zur einfacheren Entwicklung von GUI-Buildern bereitzustellen. Beans realisieren eine verbesserte Serialisierung und damit Netzwerkfähigkeit, `F33f`_`[Wiederverwendbarkeit`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Wiederverwendbarkeit]`_`f, `F33f`_`[Portabilität`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Plattformunabhängigkeit]`_`f und `F33f`_`[Interoperabilität`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Interoperabilität]`_`f.
Eine Komponente ist nur dann eine JavaBean, wenn sie der `*JavaBeans API Specification`* entspricht, die von der `*JavaBeans Component Architecture`* spezifiziert wird.
>>Instanziierung
Eine JavaBean besitzt immer einen `F33f`_`[Konstruktor`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Konstruktor]`_`f ohne Parameter (Standardkonstruktor). Dies ermöglicht eine standardisierte Instanziierung, beispielsweise einer `F33f`_`[Schaltfläche`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Schaltfläche]`_`f:
`B100`F9d9JButton button = (JButton) Class.forName("javax.swing.JButton").newInstance();`f`b
Eine Alternative dieser Instanziierung ist:
`B100`F9d9JButton button = new JButton();`f`b
>>Zugriffsoperationen
Alle `*Eigenschaften`* einer Bean wahren das `F33f`_`[Geheimnisprinzip`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Datenkapselung_(Programmierung)]`_`f `*(information hiding)`*. Der Zugriff ist über spezielle Operationen möglich, die bestimmten Konventionen entsprechen müssen.
Für eine Eigenschaft `B100`F9d9foo`f`b heißt die lesende Operation `*(Getter)`* `B100`F9d9getFoo`f`b. Bei booleschen Variablen ist alternativ auch `B100`F9d9isFoo`f`b möglich, was allgemein vorgezogen wird. Die schreibende Operation `*(Setter)`* heißt `B100`F9d9setFoo`f`b. Indizierte Eigenschaften besitzen jeweils zwei Getter und Setter: Einen für die Gesamtheit, einen für einen bestimmten Index. Eine schreibgeschützte Eigenschaft besitzt keinen (öffentlichen) Setter.
>>Introspektion
`F33f`_`[Introspektion`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Reflexion_(Programmierung)]`_`f ist der Mechanismus, eine Bean auf ihre Eigenschaften, `F33f`_`[Ereignisse`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Ereignis_(Programmierung)]`_`f `*(Events)`* und Operationen zu analysieren. Die API bietet dabei Möglichkeiten, die eine zusätzliche Unterstützung zur Introspektion von Seiten des Bean-Entwicklers unnötig machen. Beans können per `F33f`_`[Reflexion`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Reflexion_(Programmierung)]`_`f untersucht werden, wenn sie sich an die in der `F33f`_`[Spezifikation`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Java_Specification_Request]`_`f definierten Konventionen halten.
Ferner gibt es die Möglichkeit, für jede Bean eine BeanInfo-Klasse zu schreiben, die Informationen über die Bean, ihre Eigenschaften und Operationen enthält. Die Klasse `B100`F9d9java.beans.Introspector`f`b sucht erst nach expliziten Informationen und vervollständigt diese durch Reflexion.
>>Weiteres
Bei der Änderung einer `*Bound Property`* (gebundene Eigenschaft) müssen Objekte über die Änderung informiert werden. Bei `*Constrained Properties`* können diese zudem ein `*Veto`* einlegen. Die Bean-API stellt hierfür ein `*Event Delegation Model`* bereit.
Es können grafische `*Editoren`* und `*Customizer`* für bestimmte `F33f`_`[Datentypen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Datentyp]`_`f und Beans erstellt und durch sie Eigenschaften bequem angepasst werden.
Es gibt einen Persistenzmechanismus für Beans. So können Beans beispielsweise als `F33f`_`[XML`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Extensible_Markup_Language]`_`f-Dokument gespeichert werden.
>>Literatur
• Olaf Zwintzscher: `*Software-Komponenten im Überblick.`* W3L, 2004, ISBN 3-937137-60-2
>>Weblinks
• `*JavaBeans API Specification`*
• Diplomarbeit `*JinBean Java GUI Builder – Konzepte und Realisierung`* Viele der genannten Informationen sind dieser Arbeit entnommen
`c`F0af`_`[↑ Back to top`#top]`_`f`a